home *** CD-ROM | disk | FTP | other *** search
/ Aminet 46 / Aminet 46 (2001)(GTI - Schatztruhe)[!][Dec 2001].iso / Aminet / text / edit / edt10src.lha / txt / RxSelection.mod < prev    next >
Text File  |  1995-04-09  |  3KB  |  162 lines

  1. (*
  2.   .name         RxSelection
  3.   .task         arexx-commands for selections
  4.   .release      1.0
  5.   .language     Oberon-2
  6.   .translator   Amiga Oberon 3.2
  7.   .system req.  AmigaOS 2.04 or higher
  8.   .author       Joachim Barheine
  9.   .address      Hochgrevestr. 3, 38640 Goslar
  10.   .copyright    (c) 1995 by J. Barheine
  11. *)
  12.  
  13. (* .info: 08/04/95, 14:12:45, version 1 *)
  14.  
  15. MODULE RxSelection;
  16.  
  17. IMPORT
  18.   EClip,
  19.   F:= Files,
  20.   GUI,
  21.   IO:= IOServer,
  22.   K:= Kernel,
  23.   P:= EPrint,
  24.   Req:= ERequests,
  25.   Rx:= ERexx,
  26.   RxRequests,
  27.   Str:= StrPool,
  28.   T:= ETexts,
  29.   W:= Windows;
  30.  
  31. PROCEDURE BeginMark* (w: W.Window);
  32.  
  33. BEGIN
  34.   w.Mark(w.pos, w.pos);
  35. END BeginMark;
  36.  
  37. PROCEDURE Copy* (w: W.Window);
  38.  
  39. VAR
  40.   unit: LONGINT;
  41.  
  42. BEGIN
  43.   Rx.GetNumDef(unit, 0);
  44.   EClip.Copy(w, SHORT(unit));
  45. END Copy;
  46.  
  47. PROCEDURE Cut* (w: W.Window);
  48.  
  49. VAR
  50.   unit: LONGINT;
  51.  
  52. BEGIN
  53.   Rx.GetNumDef(unit, 0);
  54.   EClip.Cut(w, SHORT(unit));
  55. END Cut;
  56.  
  57. PROCEDURE EndMark* (w: W.Window);
  58.  
  59. BEGIN
  60.   IF W.markDef IN w.flags THEN
  61.     w.Mark(w.markBegin, w.pos);
  62.   ELSE
  63.     w.Mark(w.text(T.Text).LineBegin(w.pos), w.text(T.Text).LineEnd(w.pos));
  64.   END;
  65. END EndMark;
  66.  
  67. PROCEDURE Erase* (w: W.Window);
  68.  
  69. BEGIN
  70.   IF W.markDef IN w.flags THEN
  71.     w.text(T.Text).Delete(w.markBegin, w.markEnd - w.markBegin + 1);
  72.   ELSE
  73.     GUI.Flash;
  74.   END;
  75. END Erase;
  76.  
  77. PROCEDURE Paste* (w: W.Window);
  78.  
  79. VAR
  80.   unit: LONGINT;
  81.  
  82. BEGIN
  83.   Rx.GetNumDef(unit, 0);
  84.   EClip.Paste(w, SHORT(unit));
  85. END Paste;
  86.  
  87. PROCEDURE PrintClip* (w: W.Window);
  88.  
  89. BEGIN
  90.   IF W.markDef IN w.flags THEN
  91.     IO.Busy(w.text, Str.printingClip^);
  92.     IF RxRequests.ReqPrint(w) THEN
  93.       P.Print(w, w.markBegin, w.markEnd);
  94.     END;
  95.     IO.BusyDone(w.text);
  96.   END;
  97. END PrintClip;
  98.  
  99. PROCEDURE ShiftClip* (w: W.Window);
  100.  
  101. VAR
  102.   t: T.Text;
  103.   n, a, b, i, len: LONGINT;
  104.   space: K.DynString;
  105.  
  106. BEGIN
  107.   t:= w.text(T.Text);
  108.   IF W.markDef IN w.flags THEN
  109.     t.LinkChanges;
  110.     len:= w.markEnd - w.markBegin + 1;
  111.     IF len > 600 THEN IO.DisplayOff(t) END;
  112.     Rx.GetNumDef(n, 1);
  113.     IF n > 0 THEN
  114.       NEW(space, n);
  115.       FOR i:= 0 TO n - 1 DO space[i]:= " " END;
  116.       a:= t.LineBegin(w.markBegin);
  117.       WHILE a < w.markEnd DO
  118.         t.Insert(a, space^, n);
  119.         a:= t.LineEnd(a) + 1;
  120.       END;
  121.       DISPOSE(space);
  122.     ELSIF n < 0 THEN
  123.       a:= t.LineBegin(w.markBegin);
  124.       WHILE a < w.markEnd DO
  125.         b:= t.LineEnd(a);
  126.         IF b - a < -n THEN
  127.           t.Delete(a, n - a);
  128.         ELSE
  129.           t.Delete(a, -n);
  130.         END;
  131.         a:= t.LineEnd(a) + 1;
  132.       END;
  133.     END;
  134.     IF len > 600 THEN IO.DisplayOn(t) END;
  135.     t.LinkChangesDone;
  136.   ELSE
  137.     GUI.Flash;
  138.   END;
  139. END ShiftClip;
  140.  
  141. PROCEDURE SaveClip* (w: W.Window);
  142.  
  143. VAR
  144.   filename: ARRAY F.filenameLen OF CHAR;
  145.  
  146. BEGIN
  147.   F.GetFilename(filename, w.text(T.Text).path, "");
  148.   IO.Busy(w.text, Str.savingClip^);
  149.   IF Rx.GetStrLast(filename) OR Req.ReqFile(w.win, filename, TRUE) THEN
  150.     w.Refresh;
  151.     EClip.Save(w, filename);
  152.   END;
  153.   IO.BusyDone(w.text);
  154. END SaveClip;
  155.  
  156. PROCEDURE UnMark* (w: W.Window);
  157.  
  158. BEGIN
  159.   IF W.markDef IN w.flags THEN w.UnMark END;
  160. END UnMark;
  161.  
  162. END RxSelection.